//模块管理
export default {
  collections: {},
  //注册模块
  define: function (name, modules, action) {
    //将模块注册进模块容器
    this.collections[name] = action.apply(null, this.getModules(modules))
  },
  //引用模块进行计算
  require: function (modules, action) {
    return action.apply(null, this.getModules(modules))
  },
  //从容器中获取模块
  getModules(modules) {
    return modules.map((m) => {
      const module = this.collections[m]
      if (!module) throw new Error(`${m}模块不存在`)
      return module
    })
  },
}
